#ifndef _STATE_H_
#define _STATE_H_

#include "context.h"

class Context;

class State
{
public:
	State(Context* context);
	virtual ~State();

public:
	virtual void handle1() = 0;
	virtual void handle2() = 0;

protected:
	Context* context_;
};

class ConcreteState1 : public State
{
public:
	ConcreteState1(Context* context);
	~ConcreteState1();

	virtual void handle1();
	virtual void handle2();
};

class ConcreteState2 : public State
{
public:
	ConcreteState2(Context* context);
	~ConcreteState2();

	virtual void handle1();
	virtual void handle2();
};

#endif // _STATE_H_